package com.ljx.reflect.reflect02;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @author LJX
 * @Description: TODO
 * @Date: 2022/10/25 21:09
 * @Version 1.0
 */
public class Test01 {
	public static void main(String[] args) throws Exception {
		// 通过类名获取对象
		Class<?> ljxClass = Ljx.class;
		Object ljx = ljxClass.newInstance(); // 调用的是无参构造方法，相当于船舰对象

		// 获取构造方法对象
		Constructor<?>[] constructor = ljxClass.getConstructors();
		for (Constructor<?> constructor1 : constructor) {
			System.out.println(constructor1);
		}

		// 获取指定的构造函数(只能获取公共类型修饰符的)
		Constructor<?> constructor1 = ljxClass.getConstructor( String.class);
		// 实例化对象
		Object ljx1 = constructor1.newInstance("ljx");
		System.out.println(ljx1);


	}

}

@Data
@AllArgsConstructor
@NoArgsConstructor
class Ljx{
	public String name;

	protected int soubaohu;
//
//	public void doSome(){
//		System.out.println("你好世界");
//	}
//
//	private void doSome1(){
//		System.out.println("你好世界");
//	}
//
//	public void doSome2(int a){
//		System.out.println("你好世界");
//	}

}
